package stacks_and_queues;

import java.util.LinkedList;
import java.util.Queue;

public class MyStack {
    Queue q1;
    Queue q2;
    public MyStack() {
        q1 = new LinkedList();
        q2 = new LinkedList();
    }

    public void push(int x) {
        q1.offer(x);
    }

    public int pop() {
        int size = q1.size();
        while (size > 1){
            q2.offer(q1.poll());
            size--;
        }
        while (!q2.isEmpty()){
            q1.offer(q2.poll());
        }
        return (int)q1.poll();
    }

    public int top() {
        int size = q1.size();
        int tep = 0;
        while (size > 0){
            if(size == 1){
                tep = (int)q1.peek();
            }
            q2.offer(q1.poll());
            size--;
        }
        while (!q2.isEmpty()){
            q1.offer(q2.poll());
        }
        return tep;
    }

    public boolean empty() {
        return q1.isEmpty() && q2.isEmpty();
    }
    public int size(){
        int size = 0;
        while (!q1.isEmpty()){
            size++;
            q1.poll();
        }
        return size;
    }
}
